Flash memory is becoming more popular as a persistent store for a range of hardware devices, including server-class hardware. As is known, flash memory provides a significant amount of non-volatile, solid-state storage, and has exceptionally durable packaging. It comes in a variety of devices, such as memory cards, mobile phones, USB thumb drives, PDAs, cameras, or the like. Also, it typifies one of two cell architectures, NOR flash or NAND flash, and each has limitations and advantages relative to the other regarding read, write and erase times, storage density, costs per storage bit, access (e.g., random or page), execute-in-place, etc.
In either form, flash memory has been fairly suggested as an alternative to platter-based hard drive memories. While flash memory would be expected to outperform hard drives in terms of speed, noise, power consumption, and a lack of mechanical movement avoiding breakage, its cost per gigabyte and memory wear is of such great concern that its present form is largely unavailable for complete hard drive replacement. Namely, modern costs regularly make flash memory significantly higher for the same amount of capacity and conventional erase/write cycle limitations, in both the total number of writes that a flash memory can support over a lifetime as well as the available number of writes per a given interval of time, prove unsatisfactory in comparison to the near endless write cycles of its hard drive counterparts. While most flash devices support some notion of “wear leveling,” e.g., the ability of a flash device to enhance its life by remapping memory blocks to spread write operations between many memory sectors, for example, it still remains that typical flash devices only guarantee about 100,000 write-erase cycles, which is insufficient to support complex or monolithic systems, such as operating systems, file systems, etc. It is certainly insufficient when compounded in a virtualized environment where many virtual computing devices are guested on a single host platform, including each with its own operating system, drivers, interfaces, applications, etc.
Accordingly, a need exists in the art of flash memory for fully realizing its attendant advantages, such as speed, while simultaneously avoiding stressing the memory's endurance or reaching the wear limits associated with erases/writes. The need further contemplates achieving the foregoing in a flash device while enabling support for complex and monolithic systems otherwise unavailable in conventional flash devices. Naturally, any improvements along such lines should further contemplate good engineering practices, such as ease of implementation, unobtrusiveness, stability, etc.